/**
 * 环境相关工具类
 */

/**
 * 从页面URL域名中提取环境标识
 * @returns 环境标识，如 'qc1', 'qc9' 等，如果都没有则返回 null
 */
export function getEnvFromUrl(): string | null {
  if (process.server) {
    // 服务端渲染时，从 nuxtApp 或 event 中获取 URL
    const nuxtApp = tryUseNuxtApp();
    if (nuxtApp?.ssrContext?.event?.node?.req?.headers?.host) {
      const host = nuxtApp.ssrContext.event.node.req.headers.host;
      return extractEnvFromHost(host);
    }
    return null; // 服务端无法获取时返回 null
  } else {
    // 客户端从 window.location 获取
    return extractEnvFromHost(window.location.host);
  }
}

/**
 * 从主机名中提取环境标识
 * @param host 主机名，如 'm-qc1.xxxx.com' 或 'nuxt-qc9.xinli001.com'
 * @returns 环境标识，如果没有找到则返回 null
 */
export function extractEnvFromHost(host: string): string | null {
  // 通用匹配 xxx-yyy. 格式中的 yyy 部分
  const match = host.match(/^[^-]+-([^.]+)\./);
  if (match && match[1]) {
    return match[1];
  }

  // 如果没有匹配到域名中的环境标识，尝试从 URL 参数中获取 env
  if (process.client) {
    const urlParams = new URLSearchParams(window.location.search);
    const envParam = urlParams.get('env');
    if (envParam) {
      return envParam;
    }
  }

  // 都没有则返回 null
  return null;
}
